/**
 * 
 */
package com.ztesoft.web.taskgenerator.service;

import java.util.List;

import com.ztesoft.core.common.Page;
import com.ztesoft.framework.exception.BaseAppException;
import com.ztesoft.web.common.db.po.DmPO;
import com.ztesoft.web.filecommon.db.po.DmFPO;
import com.ztesoft.web.taskgenerator.db.po.DmTaskStagePO;

/**
 * <Description> <br>
 * 
 * @author codeCreater<br>
 * @version 1.0<br>
 * @taskId <br>
 * @CreateDate 2014年11月11日 <br>
 * @since V1.0<br>
 * @see com.ztesoft.web.taskgenerator.service <br>
 */

public interface IDmTaskStageService {

    DmTaskStagePO selectByPrimaryKey(Integer key) throws BaseAppException;

    List<DmTaskStagePO> selectByArg(DmTaskStagePO record) throws BaseAppException;

    Page<DmTaskStagePO> selectByArgAndPage(DmTaskStagePO record, Page<DmTaskStagePO> resultPage)
            throws BaseAppException;

    int add(DmTaskStagePO record) throws BaseAppException;

    int update(DmTaskStagePO record) throws BaseAppException;

    int delete(DmTaskStagePO record) throws BaseAppException;
    
    /**
     * 查询任务监控列表
     * @param record
     * @param resultPage
     * @return
     * @throws BaseAppException
     */
     Page<DmTaskStagePO> selectListByArg(DmTaskStagePO record, Page<DmTaskStagePO> resultPage)
    		 throws BaseAppException;
     /**
      * 查询执行计划列表明细
      * @param dmTaskId
      * @param state
      * @return
      * @throws BaseAppException
      */
     Page<DmTaskStagePO> selectListInfo(Integer dmTaskId, String state,
     		Page<DmTaskStagePO> resultListPage)
    		 throws BaseAppException;
     
     
     /**
      * 界面点击启动后台执行的方法 <br>
      * 1、手动任务启动执行  <br>
      * 2、被拒绝的系统任务重新执行 
     * @param dmPlanIdStr 前台传入的计划标志集合
     * @return
     */
    List<String> startTask(String dmPlanIdStr);
     
     List<String> immediatelyPause(String dmPlanIdStr);
     
     List<String> delayPause(String dmPlanIdStr);
     
     List<String> clickCaTask(String dmPlanIdStr);
     
     Integer[] countPauseTask(DmTaskStagePO record);
     
     List<DmPO> qryLeftErrorInfo(String dmInfoId, String state);
     
     List<DmPO> qryRightErrorInfo(String dmInfoId, String state);
    
     Integer[] selectStateCount(Integer dmTaskId);
     
     List<DmFPO> qryLeftErrorInfoFile(String dmInfoId, String state);
     
     List<DmFPO> qryRightErrorInfoFile(String dmInfoId, String state);
}
